
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE Procedure [dbo].[SP_TCMOVI_CAJA_D07]
/*-------------------------------------------------------*/                
/*---Empresa              : OFISIS S.A.                --*/                
/*---Cliente              : OFISIS                 --*/                
/*---Sistema              : Tesoreria                  --*/                
/*---Mödulo               : Empresa                    --*/                
/*---Programa             : Anulaci÷n (Todo Comprobante--*/                
/*---                       Movimiento Caja            --*/                
/*---                       (Ingresos)(Detall.Docu.)   --*/                  
/*---Script               : tcmovi_b.sql               --*/                
/*---Nombre SP            : SP_TCMOVI_CAJA_D07         --*/                
/*---Desarrollado por     : Javier Flores A.           --*/                
/*---Fecha Creaciön       : 04/07/1999                 --*/                
/*---Base Datos           : Microsoft Sql Server       --*/                
/*---Versiön              : 7.0                        --*/                
/*---Invoca a SP          :                            --*/                
/*-------------------------------------------------------*/                
/*-------------------------------------------------------*/                
/*---Modificado 1 por     :  Carlos R Marquez E        --*/                
/*---Fecha Modificaci÷n   :  29/05/2001                --*/                 
/*---Detalle Modificaci÷n :  Considerac Docs en Cartera--*/                
/*-------------------------------------------------------*/                
/*-------------------------------------------------------*/                
/*---Modificado 2 por     : Reynaldo Menacho           --*/                
/*---Fecha Modificaciön   : 22/04/2005                 --*/                 
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/                
/*---      de los documentos             --*/               
/*-------------------------------------------------------*/                
/*-------------------------------------------------------*/                
/*---ModIficado 3 por     :Maribel Julca Rodriguez     --*/                
/*---Fecha ModIficaci,n   :22/01/2005                  --*/                 
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/        
/*-------------------------------------------------------*/                
/*---ModIficado 3 por     :Aldo Escobar Meza           --*/                
/*---Fecha ModIficacion   :04/07/2011                  --*/                 
/*---Detalle ModIficacion :Se agrego la anulacion en caso -*/       
/*---sea Cheque Diferido el documento del ingreso    ---*/              
/*-------------------------------------------------------*/                
/*-------------------------------------------------------*/                
/*---Comentarios                                       --*/                
/*---                                                  --*/                
/*---                                                  --*/                
/*-------------------------------------------------------*/                
                
/*-------------------------------------------------------*/                
/*---Drop Proc SP_TCMOVI_CAJA_D07                      --*/                
/*---Grant all on SP_TCMOVI_CAJA_D07 to public         --*/                 
/*---SP_TCMOVI_CAJA_D07                                --*/                
/*-------------------------------------------------------*/                
 @ISCO_EMPR TD_VC_002,                 
 @ISCO_USUA_MODI TD_VC_008_USUA,                
 @ISCO_CAJA TD_VC_008,                 
 @ISAA_CAJA TD_VC_004,                 
 @ISMM_CAJA TD_VC_002,                 
 @ISTI_MOVI TD_VC_001,                  
 @ISNU_COMP_CAJA TD_VC_008,                 
 @INIM_MOVI TD_NU_016_004,                
 @ISCO_TIPO_OPER TD_VC_003,                
 @IDFE_ANUL TD_DT_001,             
 @ISDE_OBSE TD_VC_100                
 as                
                  
 Declare                     
    @VSST_AUXI_0004 TD_VC_001,                  
    @VNIM_MOVI_ANTE TD_NU_016_004,                  
    @OSTI_DOCU      TD_VC_003,                 
   @CSTI_DOCU_ENTI TD_VC_003,                 
    @CSNU_DOCU_ENTI TD_VC_020,                  
    @CNIM_CONV_DOCU TD_NU_016_004,                 
    @VSST_SIGN      TD_VC_001,                
    @CNIM_DETA      TD_NU_016_004,                
    @CSTI_ENTI      TD_VC_001,        
    @CSCO_ENTI      TD_VC_020,              
    @ISCO_CLIE      TD_VC_020,                
    @VSCO_ESTA_LETR TD_VC_003,                 
    @VNNU_SECU      TD_IN_001,                   
    @VSCO_TIPO_INAN TD_VC_003,                   
    @VSST_GEAS_ANUL TD_VC_001, @VSCO_ESTA_ANTE TD_VC_003,               
    @VSCO_TIPO_OPE1 TD_VC_003, @VNIM_CONV_DOCU TD_NU_016_004,              
    @CSCO_CNTA_EMPR TD_VC_010, @CSST_CIER_DOCU TD_VC_001,             
                   
     /* a) Variables de extorno */            
 @VSCO_UNID_CONC TD_VC_003,       
 @VDFE_OPER  TD_DT_001,           
 @OSNU_ASTO  TD_VC_010,           
 --@VSCO_TIPO_INAN TD_VC_003,    
 @VSST_INTE_BACH TD_VC_001,       
 @VSST_ASTO_RESU TD_VC_001,       
 @VSTI_OPNI_CARG TD_VC_001,       
 @VSTI_OPNI_ABON TD_VC_001,        
 @VSST_APRO_CXPA TD_VC_001,  
 @OSTI_DOCU_PERC  TD_VC_003       
            
 /* Devuelve el Tipo Documento */                
 Exec SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU OUTPUT            
  Exec SP_TTDOCU_CNTB_Q01 20, @OSTI_DOCU_PERC OUTPUT  
           
/* jose luis */          
 SELECT @VSST_APRO_CXPA = ST_APRO_CXPA, @VSST_INTE_BACH = ST_INTE_BACH,            
 @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER          
 FROM   TMPARA_TESO            
 WHERE  CO_EMPR = @ISCO_EMPR            
          
          
 Select @VDFE_OPER = FE_OPER,            
    @VSCO_UNID_CONC = CO_UNID_CONC            
  From   TCMOVI_CAJA                
  Where  CO_EMPR = @ISCO_EMPR                
       And    CO_CAJA = @ISCO_CAJA                
       And    AA_CAJA = @ISAA_CAJA                
       And    MM_CAJA = @ISMM_CAJA                
       And    TI_MOVI = @ISTI_MOVI                
       And    NU_COMP_CAJA = @ISNU_COMP_CAJA                  
/*  */                     
                
 Begin Tran SP_TCMOVI_CAJA_D07               
                
     Declare CU_TCMOVI_CAJA_D07_1 Cursor                
     For                
     Select TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, IM_CONV_DOCU, IM_DETA, RTRIM(ISNULL(CO_CNTA_EMPR, '')),              
   ST_CIER_DOCU                
     From   TDMOVI_CAJA                
     Where  CO_EMPR = @ISCO_EMPR                
     And    CO_CAJA = @ISCO_CAJA                
     And    AA_CAJA = @ISAA_CAJA                
     And    MM_CAJA = @ISMM_CAJA                
     And    TI_MOVI = @ISTI_MOVI                
     And    NU_COMP_CAJA = @ISNU_COMP_CAJA                
                
     Open CU_TCMOVI_CAJA_D07_1                
     Fetch CU_TCMOVI_CAJA_D07_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,                 
                                     @CNIM_DETA, @CSCO_CNTA_EMPR, @CSST_CIER_DOCU              
                
     While (@@FETCH_STATUS = 0)                
    Begin                
  If (@@FETCH_STATUS < 0)                
    Begin                
   RAISERROR 20001 'FIN DE ARCHIVO'                
   Close CU_TCMOVI_CAJA_D07_1                
   Deallocate CU_TCMOVI_CAJA_D07_1                
   Rollback tran SP_TCMOVI_CAJA_D07               
   Return                
    End                
              
   If @CSCO_CNTA_EMPR = ''              
   Begin              
    -- Seteo de variable para el procedure que actualiza el documento              
    Select @VNIM_CONV_DOCU = @CNIM_CONV_DOCU * -1              
               
   -- Se busca el estado anterior del documento              
      Exec SP_TTESTA_ORIG_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @VSCO_ESTA_ANTE output              
               
              /* Para Comprobantes de Percepcion */         
     If @CSTI_ENTI = 'C' And @CSTI_DOCU_ENTI = @OSTI_DOCU_PERC And         
        Exists ( Select NU_COMP_PERC From TCCOMP_PERC Where CO_EMPR = @ISCO_EMPR And NU_COMP_PERC = @CSNU_DOCU_ENTI )        
       Begin        
         Exec SP_TCPERC_ANUL_D02 @ISCO_EMPR, @ISCO_USUA_MODI, @CSCO_ENTI, @CSNU_DOCU_ENTI, null, null, @ISCO_CAJA ,@ISAA_CAJA,@ISMM_CAJA,@ISNU_COMP_CAJA    
             
     If @@error <> 0        
   Begin        
      Close CU_TCMOVI_BANC_D07_1        
     Deallocate CU_TCMOVI_BANC_D07_1        
     Rollback tran SP_TCMOVI_BANC_D07        
     Return        
   End        
     End      
      Else         
          begin     
      --Se actualiza el documento y se graba en tabla de kardex de estados de documentos              
      Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI,               
        @VNIM_CONV_DOCU, @VSCO_ESTA_ANTE, @ISCO_USUA_MODI, @CSST_CIER_DOCU              
                 
           If @@error <> 0              
     Begin               
               Close CU_TCMOVI_CAJA_D07_1              
         Deallocate CU_TCMOVI_CAJA_D07_1              
               Rollback tran SP_TCMOVI_CAJA_D07              
               Return                
             End              
             End  
   End              
                
          Fetch CU_TCMOVI_CAJA_D07_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,                 
                                          @CNIM_DETA, @CSCO_CNTA_EMPR, @CSST_CIER_DOCU              
                
      End                
                
      Close CU_TCMOVI_CAJA_D07_1                
      Deallocate CU_TCMOVI_CAJA_D07_1                
                
      SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL                
      FROM   TMPARA_TESO                 
      WHERE  CO_EMPR = @ISCO_EMPR                
                
      If @VSST_GEAS_ANUL = 'N'                
         Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN                
      Else                    
       Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER                
                
   If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )          
      Update  TCMOVI_CAJA                
      Set     TI_SITU = 'EXT',                 
              CO_TIPO_OPER =  @VSCO_TIPO_OPE1,                
              DE_OBSE = @ISDE_OBSE,                
              CO_USUA_MODI = @ISCO_USUA_MODI,                
              FE_USUA_MODI = GETDATE()                
      Where   CO_EMPR = @ISCO_EMPR                  
      And     CO_CAJA = @ISCO_CAJA                
      And     AA_CAJA = @ISAA_CAJA                
      And     MM_CAJA = @ISMM_CAJA                
      And     TI_MOVI = @ISTI_MOVI                
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA                
            
   Else          
      Update  TCMOVI_CAJA                
      Set     TI_SITU = 'ANU',                 
              CO_TIPO_OPER =  @VSCO_TIPO_OPE1,                
              DE_OBSE = @ISDE_OBSE,                
              CO_USUA_MODI = @ISCO_USUA_MODI,                
              FE_USUA_MODI = GETDATE()                
      Where   CO_EMPR = @ISCO_EMPR                  
      And     CO_CAJA = @ISCO_CAJA                
      And     AA_CAJA = @ISAA_CAJA                
      And     MM_CAJA = @ISMM_CAJA                
      And     TI_MOVI = @ISTI_MOVI                
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA                
                
      If @@error <> 0                
         Begin                
           Rollback Tran SP_TCMOVI_CAJA_D07               
           Return                
         End                
                
      /*** ---- Obtener Datos Anteriores--- ****/                
      Select @VSST_AUXI_0004  = t2.ST_AUXI_0004                
      FROM   TCMOVI_CAJA t1 , TTTIPO_OPER t2                
      WHERE  t1.CO_EMPR = @ISCO_EMPR                 
        and    t1.CO_CAJA = @ISCO_CAJA                
        and    t1.AA_CAJA = @ISAA_CAJA                
        and    t1.MM_CAJA = @ISMM_CAJA                 
        and    t1.TI_MOVI = @ISTI_MOVI                
        and    t1.NU_COMP_CAJA = @ISNU_COMP_CAJA                
        and    t1.CO_EMPR = t2.CO_EMPR                
        and    t1.CO_TIPO_OPER = t2.CO_TIPO_OPER              
          
          
/**-----Verifica si se genera asientos Resumidos ------*/             
 Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))                  
 From   TMOPRC_RESU t1 , TDTIPO_OPER t2                  
 Where  t2.CO_EMPR = @ISCO_EMPR And                  
 t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And                  
 t1.CO_EMPR = t2.CO_EMPR And                  
 t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB             
 /***--- Verifica si el ingreso incluye los cheques diferidos NO VA LA LOGICA SE INSERTO EN EL APT******/      
 /*      
 SELECT  @VSCO_TIDO_CHDF_1 = CO_TIDO_CHDF      
 FROM TMPARA_TESO      
 WHERE CO_EMPR = @ISCO_EMPR      
       
 SELECT       
 @VSCO_ENTI= CO_ENTI,      
 @VSCO_TIDO_CHDF = CO_TIPO_DOCU,      
 @VSNU_DOCU_CHDF = NU_DOCU      
 FROM TCMOVI_CAJA      
 WHERE       
 CO_EMPR = @ISCO_EMPR AND       
 CO_CAJA = @ISCO_CAJA AND      
 AA_CAJA = @ISAA_CAJA AND       
 MM_CAJA = @ISMM_CAJA AND      
 TI_MOVI = @ISTI_MOVI AND      
 NU_COMP_CAJA = @ISNU_COMP_CAJA       
       
 IF(@VSCO_TIDO_CHDF != '' AND @VSCO_TIDO_CHDF = @VSCO_TIDO_CHDF_1)      
 BEGIN       
  DELETE TMDOCU_CLIE      
  WHERE       
  CO_EMPR = @ISCO_EMPR AND       
  CO_CLIE = @VSCO_ENTI AND      
  CO_TIPO_DOCU = @VSCO_TIDO_CHDF AND      
  NU_DOCU_CLIE = @VSNU_DOCU_CHDF       
 END      
     */     
 ----------------------------------------------------------------------      
--------------------FIN-      
/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/             
 If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND             
    @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And            
    @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )            
 Begin            
/*-----Optiene el Numero de Asiento -----*/                
   EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT              
   IF (@@ERROR != 0)                  
   Begin              
     RollBack Tran  SP_TTAMAR_NCCA_D01            
     Return              
   End              
            
 End                  
 /*   */                 
                
                
      Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,                 
      CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                
      Values (@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,                 
              @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())                
                
      If @@error <> 0                
         Begin                
           Rollback tran SP_TCMOVI_CAJA_D07               
      Return                
         End                
                
commit tran SP_TCMOVI_CAJA_D07              
                
/*------------------------ Fin ------------------------------*/ 

GO
